package test2;

public class test2 {
	private static long count;
	public final long id = count++;

	private int prywatnyInt;
	private String prywatnyString;
	public int publicznyInt;

	public klasaWewnetrzna getKlasaWewnetrzna() {
		return new klasaWewnetrzna();
	}
	
	public void staticInnerClass(klasaStatycznaWewenetrzna innerStatic){
	}

	public long processInnerClass(klasaWewnetrzna klWew) {
		// id obiktu na rzecz
		return klWew.getId();
	}

	public class klasaWewnetrzna {
		private int innerInt;
		private String innerString;
		public int publicznyInnerInt;

		public int dupa8() {
			new Runnable() {
				public void run() {
					
				}
			};
			class dupaWewnatrz{}
			return prywatnyInt;			
		}

		public void setDupa8(int pInt) {
			prywatnyInt = pInt;
		}

		public long getId() {
			return id;
		}

		public test2 getOutterClass() {
			return test2.this;
		}

		public klasaWewnetrzna getNew() {
			return new klasaWewnetrzna();
		}

		public void processOutterClass(test2 pOutter, int pInt) {
			// jest dostep do skladowych prywatnych
			pOutter.prywatnyInt = pInt;
		}
	}

	public static class klasaStatycznaWewenetrzna {
		private int innerInt;
		private String innerString;
		public int publicznyInnerInt;

		public void outerClass(test2 outer) {
		}
	}

}
